DECLARE @maxId int
SET @maxId = (SELECT MAX(id) FROM [dbdd827ae0d97f4d64b80ea1c100f79039].[dbo].[Usuario])

DECLARE @iter int
SET @iter = (SELECT MIN(id) FROM [dbdd827ae0d97f4d64b80ea1c100f79039].[dbo].[Usuario])

DECLARE @idUsuario int
DECLARE @cantAciertos int, @cantExactos int, @cantEspeciales int

--Recorro la tabla de usuarios por id, de menor a mayor
WHILE @iter <= @maxId

	BEGIN
	
    SET @idUsuario = (SELECT id FROM [dbdd827ae0d97f4d64b80ea1c100f79039].[dbo].[Usuario] WHERE id = @iter)

	--Si existe el usuario con ese id
	IF(@idUsuario <> '')
	
		BEGIN
			
			--Creo la tabla #tempResultados que tiene para el usuario los
			--resultados pronosticados y los reales de los partidos de primera fase
			SELECT pr.[golesA]
			,pr.[golesB]
			,p.[golesA] as golesAR
			,p.[golesB] as golesBR
	      
			INTO #tempResultadosPrimeraFase
			
			FROM [dbdd827ae0d97f4d64b80ea1c100f79039].[dbo].[PronosticoPartido] pr, [dbdd827ae0d97f4d64b80ea1c100f79039].[dbo].[Partido] p
			
			WHERE pr.[idPartido] between 1 and 1 AND pr.[idUsuario] = @idUsuario 
				AND pr.[idPartido] = p.[id] AND p.[golesA] <> -1
					
			SET @cantAciertos = (SELECT COUNT(*) FROM #tempResultadosPrimeraFase

				WHERE(
						(golesA > golesB) AND (golesAR > golesBR)
					OR
						(golesA = golesB) AND (golesAR = golesBR)
					OR
						(golesA < golesB) AND (golesAR < golesBR)
				)
			)
					
			SET @cantExactos = (SELECT COUNT(*) FROM #tempResultadosPrimeraFase
			
				WHERE(
						(golesA = golesAR)
					AND
						(golesB = golesBR)
				)
			)
			
			--Actualizo el puntaje en la tabla de usuario					
			UPDATE [dbdd827ae0d97f4d64b80ea1c100f79039].[dbo].[Usuario]
			SET puntaje = puntaje + @cantAciertos * 13 + @cantExactos * 7 WHERE id = @idUsuario

			DROP TABLE #tempResultadosPrimeraFase
			
		END
    
    SET @iter = @iter + 1
    
END

